// ---------------------------------------
// Template: cls.cs	rel: 3.0.0.0 NoDal
// ---------------------------------------
using System;
using System.Data;
using IGCal.Collections;
using IGCal.Funzioni;
using IGCal.DB;

namespace Calcio.StampaDistinta
{
	/// <summary>
	/// Middle tier per accedere alla tabella PresenzeGara
	/// </summary>
	public class GiocatorePresenteGaraCollection : IGCalNameObjectCollectionBase
	{

		/// <summary>
		/// Crea una nuova istanza della collection
		/// </summary>
		public GiocatorePresenteGaraCollection()
		{
		}

		/// <summary>
		/// Recupera GiocatorePresenteGara dalla collection
		/// </summary>
		public GiocatorePresenteGara this[string NumMaglia]
		{
			get
			{
				GiocatorePresenteGara GiocatorePresenteGara = new GiocatorePresenteGara();
				
				GiocatorePresenteGara.NumMaglia = NumMaglia;
				
				GiocatorePresenteGara = (GiocatorePresenteGara) this.BaseGet(GiocatorePresenteGara.NumMaglia);

				return GiocatorePresenteGara;
			}
		}

			/// <summary>
		/// Indexer
		/// </summary>
		public GiocatorePresenteGara this[int Index]
		{
			get
			{
				return (GiocatorePresenteGara)this.BaseGet(Index);
			}
		}

		/// <summary>
		/// Rigenera la collection leggendo dalla tabella PresenzeGara
		/// </summary>
		/// <param name="connection">Connessione al database da cui leggere</param>
		/// <param name="sqlWhere">Clausola where da utilizzare nella query (null o "" per leggere tutti i record)</param>
		public void Refresh(Connection connection, string sqlWhere)
		{
			base.BaseClear();

			DataTable dataTable;
			GiocatorePresenteGara GiocatorePresenteGara;

			string sql = GetQuery(sqlWhere);

			dataTable = connection.GetDataTable(sql);

			foreach (DataRow row in dataTable.Rows)
			{
				GiocatorePresenteGara = new GiocatorePresenteGara();
				GiocatorePresenteGara.ReadFromRow(row);
				base.BaseAdd(GiocatorePresenteGara.NumMaglia, GiocatorePresenteGara);
			}
		}

		/// <summary>
		/// Recupera GiocatorePresenteGara dalla tabella PresenzeGara
		/// </summary>
		/// <param name="connection">Connessione al database da cui leggere</param>
		/// <param name="NumMaglia">NumMaglia</param>
		/// <param name="ID">ID</param>
		/// <returns>GiocatorePresenteGara</returns>
		public static GiocatorePresenteGara Read(Connection connection, string NumMaglia, int ID)
		{
			GiocatorePresenteGara GiocatorePresenteGara;

			DataRow row;

			try
			{
				row = GetRecord(connection, null, NumMaglia);
			}
			catch
			{
				return null;
			}

			GiocatorePresenteGara = new GiocatorePresenteGara();
			GiocatorePresenteGara.ReadFromRow(row);
			return GiocatorePresenteGara;
		}

	
		/// <summary>
		/// Costruisce la query sulla tabella
		/// </summary>
		/// <param name="SQLWhere">Clausola where da utilizzare nella query (null o string.Empty per leggere tutti i record)</param>
		/// <returns>La query</returns>
		private static string GetQuery(string SQLWhere)
		{
			if (SQLWhere == null || SQLWhere == string.Empty)
				return "Select * From PresenzeGara Order By NumMaglia ASC ";
			else
				return "Select * From PresenzeGara Where " + SQLWhere + " Order By NumMaglia ASC ";
		}

		/// <summary>
		/// Recupera un record dalla tabella (se non c'e' o ce ne sono piu' di uno viene rilanciata un'eccezione)
		/// </summary>
		/// <param name="connection">Connessione</param>
		/// <param name="dataAdapter">DataAdapter nel caso in cui la tabella debba essere aperta in scrittura</param>
		/// <param name="NumMaglia">NumMaglia</param>
		/// <param name="ID">ID</param>
		/// <returns>La DataRow relativa al record</returns>
		private static DataRow GetRecord(Connection connection, DataAdapter dataAdapter, string NumMaglia)
		{
			string SQLWhere = null;
			DataTable dataTable;

			SQLWhere += string.Format(" And NumMaglia = '{0}' ", NumMaglia);
		
			string SQL = GetQuery(SQLWhere.Substring(4));

			if (dataAdapter != null)
				dataTable = connection.GetDataTable(dataAdapter, SQL);
			else
				dataTable = connection.GetDataTable(SQL);

			if (dataTable.Rows.Count == 0)
				throw new Exception("Record non trovato");

			if (dataTable.Rows.Count > 1)
				throw new Exception("La chiave primaria non identifica solo un record");

			return dataTable.Rows[0];
		}

		internal void Clear()
		{
			base.BaseClear();
		}
	}







	/// <summary>
	/// Middle tier per accedere ad un record della tabella PresenzeGara
	/// </summary>
	public class GiocatorePresenteGara
	{
		private int _ID;
		private int _IDGara;
		private int _IDGiocatore;
		private string _NumMaglia;
		private bool _Capitano;
		private bool _ViceCapitano;
		private string _Note;
		private string _TipoDocumento;
		private string _CodiceDocumento;
		private string _ProvenienzaDocumento;

		/// <summary>
		/// Crea una nuova istanza della classe
		/// </summary>
		public GiocatorePresenteGara()
		{
		}

		/// <summary>
		/// Legge le propriet� della classe dalla row
		/// </summary>
		/// <param name="row">Row da leggere</param>
		public void ReadFromRow(DataRow row)
		{
			_ID = General.DBToInt(row["ID"]);
			_IDGara = General.DBToInt(row["IDGara"]);
			_IDGiocatore = General.DBToInt(row["IDGiocatore"]);
			_NumMaglia = General.DBToString(row["NumMaglia"]);
			_Capitano = General.DBToBool(row["Capitano"]);
			_ViceCapitano = General.DBToBool(row["ViceCapitano"]);
			_Note = General.DBToString(row["Note"]);
			_TipoDocumento = General.DBToString(row["TipoDocumento"]);
			_CodiceDocumento = General.DBToString(row["CodiceDocumento"]);
			_ProvenienzaDocumento = General.DBToString(row["ProvenienzaDocumento"]);
		}

		/// <summary>
		/// Legge/Imposta ID
		/// </summary>
		public int ID
		{
			get
			{
				return _ID;
			}

		}

		/// <summary>
		/// Imposta ID
		/// </summary>
		/// <param name="ID">nuovo valore diID</param>
		internal void SetID(int ID)
		{
			_ID = ID;
		}

		/// <summary>
		/// Legge/Imposta IDGara
		/// </summary>
		public int IDGara
		{
			get
			{
				return _IDGara;
			}

			set
			{
				_IDGara = value;
			}
		}
		/// <summary>
		/// Legge/Imposta IDGiocatore
		/// </summary>
		public int IDGiocatore
		{
			get
			{
				return _IDGiocatore;
			}

			set
			{
				_IDGiocatore = value;
			}
		}
		/// <summary>
		/// Legge/Imposta NumMaglia
		/// </summary>
		public string NumMaglia
		{
			get
			{
				return _NumMaglia;
			}

			set
			{
				_NumMaglia = value;
			}
		}
		/// <summary>
		/// Legge/Imposta Capitano
		/// </summary>
		public bool Capitano
		{
			get
			{
				return _Capitano;
			}

			set
			{
				_Capitano = value;
			}
		}
		/// <summary>
		/// Legge/Imposta ViceCapitano
		/// </summary>
		public bool ViceCapitano
		{
			get
			{
				return _ViceCapitano;
			}

			set
			{
				_ViceCapitano = value;
			}
		}
		/// <summary>
		/// Legge/Imposta Note
		/// </summary>
		public string Note
		{
			get
			{
				return _Note;
			}

			set
			{
				_Note = value;
			}
		}
		/// <summary>
		/// Legge/Imposta TipoDocumento
		/// </summary>
		public string TipoDocumento
		{
			get
			{
				return _TipoDocumento;
			}

			set
			{
				_TipoDocumento = value;
			}
		}
		/// <summary>
		/// Legge/Imposta CodiceDocumento
		/// </summary>
		public string CodiceDocumento
		{
			get
			{
				return _CodiceDocumento;
			}

			set
			{
				_CodiceDocumento = value;
			}
		}
		/// <summary>
		/// Legge/Imposta ProvenienzaDocumento
		/// </summary>
		public string ProvenienzaDocumento
		{
			get
			{
				return _ProvenienzaDocumento;
			}

			set
			{
				_ProvenienzaDocumento = value;
			}
		}
	
	}
}

